import axios from "axios";
import store from "@/store";
import router from "@/store";

// 设置基准地址
const baseURL = "http://127.0.0.1:3000";
// 创建axios实例
const instance = axios.create({ baseURL });

// 请求拦截器
instance.interceptors.request.use((config) => {
  const token = store.state.userStore.token;
  // 判断是否有token
  if (token) {
    // 将token放在请求头对象中
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    console.log(error);
    // 如果服务器端返回的是表示失败的状态码 401未授权
    if (error.response.status === 401) {
      // 跳转到登录页
      router.push("/login");
    }
    return Promise.reject(error);
  }
);

// 用于生成请求配置的函数
function generateRequestConfig(url, method, data) {
  return {
    url: url,
    method: method,
    [method === "get" ? "params" : "data"]: data,
  };
}

// 发送请求
export function request(url, method, data) {
  return instance(generateRequestConfig(url, method, data));
}
